feat(deck): visual polish — circular avatars, Inter font, token-derived palette, tinted agent icons - #580
Merged
Merged
Conversation
Assumption audit results (7 verified, 1 falsified): - FALSIFIED: controller repaint diff-skips unchanged KeySpec JSON, so ready-less paneIcons would never appear after async decode. Reworked Tasks 6/9/10/11: buildFrame stamps frame-time ready via iconReady(providerIconDataUrl(...)), tint colors move to a shared pane-tint-colors.ts leaf module, renderer draws only ready entries, and Task 11 proves the false->true wire flip on the real controller. - Fixed Task 2/Task 4 inconsistency: Task 4 now updates the avatar font assertion to DECK_FONT_STACK. - Corrected Vite 5 -> Vite 6.4.1; noted latin-subset-only font load.
The badge was drawn at last.x + last.size + ICON_GAP, outside the centered icon row with no width accounting, clipping off 80px keys in the standard overflow case (repo + 2 agents). iconLayout only fits 3 slots on-key, so the badge now OCCUPIES A ROW SLOT: drawn agent icons shrink so repo + agents + badge never exceed MAX_ROW_SLOTS (3), and the badge renders centered in the reserved last slot. Tests updated with badge position/bounds assertions (harness measureText stub = 6px/char) and a MAX_KEY_PANE_ICONS-binding check without a repo icon.
…echeck (fresheyes review) The plan's providerIconSvg implementation indexed Record<CodingCliProviderName, ...> with an open string, which is TS7053 under strict and would break the later 'npm run typecheck — clean' verification gates (Tasks 8, 10, 11). Use the same 'as keyof typeof PROVIDER_ICONS' cast the repo already uses in session-type-utils.ts.
…ed color + ratio)
🤖 Generated with Amplifier Co-Authored-By: Amplifier <[email protected]>
…paneIcons in the KeySpec
…n with +N overflow
…icons polish Adds two full-pipeline proof tests to the tile-styles e2e block: - busy agent pane surfaces as a blue-tinted paneIcon on the wire from real store state (pre-decode ready:false wire shape) - pane icon flips ready false->true on the wire when its tinted data URL decodes, proven on the REAL DeckController + IconImageCache (the A1 falsification fix: readiness stamping defeats the JSON diff-skip that would otherwise swallow the post-decode repaint) Also removes the now-dead DeckTab.dot field (Task 9 deleted its only consumer when the KeySpec dot was replaced by paneIcons; the brief's stray-dot grep flagged it). tile-state.ts stays untouched per the pinned-module constraint; tileDot remains covered by its own suite. docs/index.html has no deck depiction (grep clean) - left untouched. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <[email protected]>
… dot stays; only the icons KeySpec lost it) 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Visual polish of the Stream Deck "Status icons" tile style (follow-up to #576). Client-only.
Quality: TDD throughout; plan review formally PASSED (3 rounds); independent delta review passed round 1 with zero blockers (hand-verified color conversions and badge/slot arithmetic); full suites green (client 4604 / server 4656 / integration 350); lint + typecheck clean. Non-blocking follow-ups noted in review logs (dead DeckTab.dot field, skip loading icons hidden behind the +N badge).